#include <chrono> // C++ 标准库中所有和高精度计时有关的类型
#include <iostream>

using namespace std;
using namespace std::chrono;

class Timer {
public:
  // 构造函数
  // 在 Timer 创建的时候调用
  // 构造函数必须初始化类型的所有属性
  Timer() {
    cout<<"Timer 开始计时了"<<endl;
    start = high_resolution_clock::now();
    end = high_resolution_clock::now();
  }
  // 析构函数
  // 在 Timer 离开作用域的时候，销毁的时候
  ~Timer() {
    cout<<"Timer 停止计时了"<<endl;
    // 用停止时的时间点 - 创建时的开始时间点
    end = high_resolution_clock::now();

    auto duration = duration_cast<microseconds>(end - start);
    cout<<"经过了: "<<duration.count()<<"毫秒."<<endl;
  }

private:
  // 定义表示开始和结束计时的时间点
  // 用高精度时钟创建一个时间点
  // 属性：一个类型的特征
  // Timer: 
  time_point<high_resolution_clock> start;
  time_point<high_resolution_clock> end;
};
